﻿Imports System.Data.OleDb

Public Class clsOptions

#Region "attributs"

    Private _noOption As Integer
    Private _nomOption As String
    Private _descriptionOption As String

#End Region

#Region "constructeurs"

    '********************************************************************************
    ' But:  Initialiser une nouvelle option et, donc, lui attribuer un numéro unique
    '********************************************************************************
    Public Sub New()
        'créé un numéro de catégorie unique pour la nouvelle catégorie
        Dim bd = New cls_GestionBD("taco.mdb")
        bd.remplirDataSet("SELECT MAX(noOption) AS noMaximum FROM tblOptions", "tbl")

        _noOption = nvl(bd.dsBd.Tables("tbl").Rows(0).Item("noMaximum"), 0) + 1
        nom = ""
        description = 0
    End Sub

    '********************************************************************************
    ' But:  Initialiser une option à partir des ses informations provenant de la base de données
    ' Paramètres:
    '   row:    Enregistrement résultant d'une requête SELECT * FROM tbl
    '********************************************************************************
    Public Sub New(ByVal row As DataRow)
        With row
            _noOption = nvl(.Item("noOption"), Nothing)
            nom = nvl(.Item("nomOption"), Nothing)
            description = nvl(.Item("descriptionOption"), Nothing)
        End With
    End Sub

#End Region

#Region "get/set"

    ReadOnly Property numero() As Integer
        Get
            Return _noOption
        End Get
    End Property

    Property nom() As String
        Get
            Return _nomOption
        End Get
        Set(ByVal value As String)

            If value <> "" Then
                _nomOption = value
            Else
                _nomOption = "NouvelleOption"
            End If

        End Set
    End Property

    Property description() As String
        Get
            Return _descriptionOption
        End Get
        Set(ByVal value As String)
            _descriptionOption = value
        End Set
    End Property

#End Region

#Region "méthodes"

    '********************************************************************************
    ' But:  Enregistrer l'option dans la base de données
    '********************************************************************************
    Public Sub enregistrer()
        'importe l'option de la base de données
        Dim bd As New cls_GestionBD("taco.mdb")
        bd.daBd.SelectCommand = New OleDbCommand("SELECT * FROM tblOptions where noOption = @numero")
        bd.daBd.SelectCommand.Parameters.Add("@numero", OleDbType.Integer).Value = numero
        bd.remplirDataSet("tbl")

        'met à jour l'option si elle existe déjà dans la base de données
        If bd.dsBd.Tables("tbl").Rows.Count = 1 Then
            With bd.dsBd.Tables("tbl").Rows(0)
                .Item("noOption") = numero
                .Item("nomOption") = nom
                .Item("descriptionOption") = description
            End With

            'créé un nouvel enregistrement si l'option n'existe pas encore dans la base de données
        ElseIf bd.dsBd.Tables("tbl").Rows.Count = 0 Then

            Dim lNewRow As DataRow
            lNewRow = bd.dsBd.Tables("tbl").NewRow

            With lNewRow
                .Item("noOption") = numero
                .Item("nomOption") = nom
                .Item("descriptionOption") = description
            End With

            bd.dsBd.Tables("tbl").Rows.Add(lNewRow)

        End If

        'met à jour la base de données
        bd.miseAJourBD("tbl")


    End Sub

    '********************************************************************************
    ' But:  Supprimer l'option de la base de données
    '********************************************************************************
    Public Sub supprimer()
        'importe l'option de la base de données
        Dim bd As New cls_GestionBD("taco.mdb")
        bd.daBd.SelectCommand = New OleDbCommand("SELECT * FROM tblOptions where noOption = @numero")
        bd.daBd.SelectCommand.Parameters.Add("@numero", OleDbType.Integer).Value = numero
        bd.remplirDataSet("tbl")

        'supprime l'option si elle existe dans la base de données, sinon, affiche un message d'erreur
        If bd.dsBd.Tables("tbl").Rows.Count = 1 Then
            bd.dsBd.Tables("tbl").Rows(0).Delete()
        ElseIf bd.dsBd.Tables("tbl").Rows.Count = 0 Then
            MsgBox("ERREUR: L'option n'existe pas dans la base de données." & vbCrLf & _
                   "Il est donc impossible de la supprimer.")
        End If

        'met à jour la base de données
        bd.miseAJourBD("tbl")

    End Sub

    '********************************************************************************
    ' But:  Afficher tous les attributs de l'option
    ' Return:   Une chaine de caractère contenant chaque attribut accompagné de sa valeur
    '********************************************************************************
    Public Overrides Function ToString() As String
        Return "numero:" & vbTab & vbTab & numero & vbCrLf & _
                "nom:" & vbTab & vbTab & nom & vbCrLf & _
                "description:" & vbTab & description
    End Function

#End Region

End Class
